Lambda@Edge 関数のログが見つからないときの対処方法
困っていた内容
Lambda@Edge をバージニア北部(us-east-1)リージョンにデプロイしましたが、ログが CloudWatch Logs へ出力されないです。
正常にログを出力させる方法を教えてください。
どう対応すればいいの?
Lambda@Edge のログは CloudWatch Logs へ出力されますが、関数が実行される場所にもっとも近いリージョンに保存されます。
日本から CloudFront へリクエストを送信した場合、ログは東京リージョンに作成された可能性が高いです。まずは東京リージョンの CloudWatch Logs でロググループを確認してみてください。
ロググループは以下の形式で出力されます。
/aws/cloudfront/LambdaEdge/DistributionId
CloudWatch Logs コンソールのロググループで /aws/cloudfront/LambdaEdge/
と入力すれば、Lambda@Edge のロググループのみ検索できます。
もちろんディストリビューション ID で直接ロググループを検索することも可能です。(CloudWatch Logs コンソールの検索機能は以前より向上しています。)
どこで呼び出されたかわからないときは?
クライアント(ビューワー)がどの場所からアクセスしたか不明なときは、CloudFront コンソールの Monitoring からどのリージョンの Lambda@Edge が呼び出されたかを確認してください。
以下の順番に操作することで確認ができます。
参考資料
注記
エラーをトラブルシューティングするときに CloudWatch ログファイルまたはメトリクスを確認する場合は、関数が実行される場所に最も近いリージョンに表示または保存されていることに注意してください。したがって、例えば英国のユーザーがいるウェブサイトまたはウェブアプリケーションで、ディストリビューションに関連する Lambda 関数がある場合は、リージョンを変更してロンドン AWS リージョンの CloudWatch メトリクスまたはログファイルを表示する必要があります。詳細については、このトピックの後半の「Lambda@Edge リージョンの判別」を参照してください。